﻿//==============================================================================
// OutFile 
//==============================================================================

#include "stdafx.h"
#include "Manager.h"
#include "OutFile.h"

namespace LNote
{
namespace Core
{
namespace FileIO
{

//==============================================================================
// ■ OutFile
//==============================================================================

	//----------------------------------------------------------------------
	//
	//----------------------------------------------------------------------
	OutFile::OutFile(Manager* manager, const lnChar* filePath, FileType type)
		: AsyncSaveObject		( manager )
        , mFilePath				( filePath )
		, mType					( type )
		, mData					( NULL )
		, mSize					( 0 )
		, mSaveFinished		    ( false )
	{
	}

	//----------------------------------------------------------------------
	//
	//----------------------------------------------------------------------
	OutFile::~OutFile()
	{
	}

	//----------------------------------------------------------------------
	//
	//----------------------------------------------------------------------
	void OutFile::save( const void* buffer, int size, bool async )
	{
		mData = buffer;
		mSize = size;
		startSaveProc( async );
	}

	//----------------------------------------------------------------------
	//
	//----------------------------------------------------------------------
	bool OutFile::onSaveProc()
	{
        FILE* fp = _tfopen( 
			mFilePath.c_str(), 
			(mType == FileType_Binary) ? _T("wb") : _T("w"));

        if ( fp )
        {
            fwrite( mData, 1, mSize, fp );
            fclose( fp );
			return true;
        }
        return false;
	}

} // namespace FileIO
} // namespace Core
} // namespace LNote

//==============================================================================
//
//==============================================================================